package xutils

import "fmt"

type XError struct {
	Code int // 错误代码
	Err  error
}

// 实现 error 接口的 Error() 方法
func (e XError) Error() string {
	return e.Err.Error()
}

// 创建自定义错误的辅助函数
func MakeError(code int, format string, a ...any) error {
	return XError{Code: code, Err: fmt.Errorf(format, a...)}
}

func Error(code int, v interface{}) error {
	if err, ok := v.(error); ok {
		return XError{Code: code, Err: err}
	} else {
		return XError{Code: code, Err: fmt.Errorf("%v", v)}
	}
}
